#include "plano.hpp"
Plano::Plano(Material* _material,const Vetor& _ponto,const Vetor& _normal) : ponto(_ponto) , normal(_normal)
 {
	tamanho = 2.0;
	material = _material;
	normal = _normal.normaliza();
}

double Plano::intersecao(const Raio& r,Vetor& p) {
	
	const double NprodEscD = normal.prodEsc(r.getDirecao());
	
	if(NprodEscD < 0.0) {
		const double distancia = (normal.prodEsc(ponto.subVet(r.getOrigem()))) / (NprodEscD);
		if(distancia >= 0.0/* && distancia <= 7.5*/) { 
			p.set(
				r.getOrigem().x + distancia*r.getDirecao().x,
				r.getOrigem().y + distancia*r.getDirecao().y,
				r.getOrigem().z + distancia*r.getDirecao().z
			);
			return distancia;	
		}
	}
	return 90.0;
	
}

Vetor Plano::getNormal(const Vetor& ponto) const { return normal; }

Vetor Plano::getPonto(void) const { return ponto; }


